package qc.module.ehs.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import qc.common.core.enums.EhsTaskCategoryTypeEnum;
import qc.common.core.enums.TimeRangeLengthEnum;

import java.io.Serializable;
import java.util.Date;

/**
 * EHS 任务项信息表
 *
 * @author QuCheng Tech
 * @since 2024/11/13
 */
@Data
@TableName("EHS_TASK_ITEM")
public class EhsTaskItem implements Serializable, Cloneable {

    /**
     * 任务项ID
     */
    @TableId
    private String itemid;

    /**
     * 任务项名称；使用任务标题+时间周期文字
     */
    private String itemname;

    /**
     * 任务ID
     */
    private String taskid;

    /**
     * 任务分组ID
     */
    private String groupid;

    /**
     * 所属组织代码
     */
    private String orgcode;

    /**
     * 任务分类名称;安全检查、设备保养、隐患治理、作业活动
     */
    private String catname;

    /**
     * 任务大类
     */
    private EhsTaskCategoryTypeEnum tasktype;

    /**
     * 计划时间周期文字;文字信息
     */
    private String plantmstr;

    /**
     * 计划开始时间;一个执行周期的开始时间
     */
    private Date planbegintm;

    /**
     * 计划截止时间;一个执行周期的截止时间
     */
    private Date planendtm;

    /**
     * 周期类型;在计划起止时间内按日、周、旬、月、季度、年为周期执行
     */
    private TimeRangeLengthEnum planfrequencytype;

    /**
     * 周期内计划执行次数;每个周期内要执行的次数，必须达到此数量才能设置任务状态为完成
     */
    private Integer planfrequencycount;

    /**
     * 所属单元ID;目标执行单元；在督查或集中检查任务时一个分组可以检查多个单元，此时不指定单元
     */
    private String unitid;

    /**
     * 所属单元名称
     */
    private String unitname;

    /**
     * 设备设施ID;危险源ID、设备设施ID
     */
    private String facilityid;

    /**
     * 设备设施名称
     */
    private String facilityname;

    /**
     * 危险源ID
     */
    private String hazardid;

    /**
     * 危险源名称
     */
    private String hazardname;

    /**
     * 责任部门ID;责任部门关联有对应的部门责任人和安全员，对应的责任人和安全员可以看见部门的任务
     */
    private Integer resdeptid;

    /**
     * 责任部门名称
     */
    private String resdeptname;

    /**
     * 参与组员1ID
     */
    private Integer resuserid1;

    /**
     * 参与组员1名称
     */
    private String resusername1;

    /**
     * 参与组员2ID
     */
    private Integer resuserid2;

    /**
     * 参与组员2名称
     */
    private String resusername2;

    /**
     * 任务是否执行完成
     */
    private Boolean hasfinish;

    /**
     * 任务项是否终止/取消;标识任务项是否终止/取消
     */
    private Boolean hasend;

    /**
     * 实际执行次数
     */
    private Integer execcount;

    /**
     * 实际完成时间;完成的时间，用于判断是否超时完成
     */
    private Date execendtm;

    /**
     * 辨识危险源次数
     */
    private Integer execidentifycount;

    /**
     * 上报隐患次数
     */
    private Integer exectroublecount;

    /**
     * 最新执行开始时间;最新执行周期文字信息
     */
    private Date latestexecbegintm;

    /**
     * 最新执行截止时间
     */
    private Date latestexecendtm;

    /**
     * 转交是否接收;如果转交没有被接收不作为当前责任部门/人的任务
     */
    private Boolean transhasreceive;
    /**
     * 接收确认时间;接收确认或不接收时更新该时间
     */

    private Date transreceivetm;

    /**
     * 当前责任部门ID;任务在执行过程中需要其他部门协同时设置由其他部门作为责任部门
     */
    private Integer transdeptid;

    /**
     * 当前责任部门名称
     */
    private String transdeptname;

    /**
     * 当前责任人ID
     */
    private Integer transuserid;

    /**
     * 当前责任人名称
     */
    private String transusername;
    /**
     * 记录单/报告ID;根据整改情况生成的报告ID，可以自动生成后人工修改再上传更新
     */
    private Integer rptid;
}
